1. Field of the Invention
The invention relates to embedded code such as microcode. Specifically, the invention relates to apparatus, systems, and methods for sharing a cached security profile in a database environment.
2. Description of the Related Art
Users continue to require high availability from computer systems and computer subsystems. Web servers, database servers, application servers, and the like are expected to provide around the clock availability. Maintenance and upgrades to the systems should minimize the time that the system is off-line.
The computer system or subsystem includes a basic set of instructions for performing operations. This basic set of instructions comprises a fundamental set of computer instructions, similar to an operating system, which define how the computer system or subsystem will function. Generally, this basic set of instructions is referred to as the code image, microcode, embedded code, or the like. The code image typically is assembly code instructions or raw machine language binary code instructions that are optimized for a particular microprocessor and/or set of hardware.
Typically, a Basic Input Output System (BIOS) program loads the code image into volatile RAM when a computer system is powered up. Alternatively, the code image is stored in non-volatile RAM or other forms of memory. Execution of the instructions in the code image begins once the computer system properly initializes.
Periodically, the code image must be updated to provide improved functionality, resolve programming bugs, and/or support improved hardware. It is desirable that an old code image be updated with a new code image with minimal interruption of the computer system concurrently executing the old code image. In addition, it is desirable that the new code image be stored in substantially the same location in memory as the old code image. The code image update should require minimal time, comprise operations of minimal complexity, and provide minimal delay in resuming regular operations once the update completes.
Conventionally, code image updates are performed by a section of the old code image known as the bootstrap code. The bootstrap code is executed in response to an interrupt signaling a code image update operation. Generally, the bootstrap code copies a new code image directly from a source such as a disk drive into the same space occupied by the old code image. The copy operation overwrites the old code image with the new code image. This process is known as a code overlay.
Typically, a new code image includes changes in initialization processes for various hardware, formats for data structures, parameter lists used to interact with other modules of a computer system, maintenance of persistent data, updating of other dependent code images, and the like. The changes may be made to resolve resource conflicts, comply with updated communication protocols, resolve coding errors, and add improved functionality. Failure to make these changes can cause the new code image to be incompatible with other software and hardware components of the computer system.
Unfortunately, conventional code overlay operations do not allow for handling of these incompatibilities between the old code image and the new code image. In order for a conventional code overlay to handle such incompatibilities, the bootstrap code of the old code image would need to be coded to anticipate and reconcile the incompatibilities and differences. Such incompatibilities are unknown at the time the instructions of the bootstrap code are written and stored in the old code image.
Accordingly, what is needed is an improved apparatus, system, and method for updating a code image. The apparatus, system, and method should identify incompatibilities between an old code image and a new code image. The apparatus, system, and method should reconcile incompatibilities between the old code image and a new code image. In addition, the apparatus, system, and method should preserve an environment associated with the old code image to facilitate reconciliation of incompatibilities by a bootstrap portion of the new code image. The apparatus, system, and method should also reconcile incompatibilities prior to copying the new code image over the old code image.